A good answer might be:

The completed program is below.


Complete Program

Here is the complete program. As soon as the for-loop finds the slot that contains the target, the method returns to the caller with the index of that slot. If the for-loop reaches the end of the array, -1 is returned.

class Searcher
{
  // seek target in the array of strings.
  // return the index where found, or -1 if not found.
  public static int search( String[] array, String target )
  {
     for ( int j=0; j  < array.length; j++ )
       if ( array[j] != null )
         if ( array[j].equals( target ) ) return j ; // Target found.

     return -1 ; // Target not found 
  }
}

class SearchTester
{
  public static void main ( String[] args )
  {
    final int theSize = 20 ;

    String[] strArray = new String[ theSize ] ;  

    strArray[0] = "Boston" ;
    strArray[1] = "Albany" ;
    strArray[2] = "Detroit" ;
    strArray[3] = "Phoenix" ;
    strArray[4] = "Peoria" ;
    strArray[6] = "Albany" ;
    strArray[7] = "Houston" ;
    strArray[8] = "Hartford" ;

    // print out only those slots with data
    for (int j=0; j  < strArray.length; j++ )
      if ( strArray[j] != null )
        System.out.println( j + ": " + strArray[j] );

    // search for "Peoria"
    int where = Searcher.search( strArray, "Peoria" ); 
    if ( where >= 0 )
      System.out.println("Target found in slot " + where );
    else
      System.out.println("Target not found" );

  }
}


QUESTION 20:

How could this program be improved?